Computerized devices, comprising hardware and software, control almost every aspect of our life—from writing documents to controlling traffic lights. However, computerized systems are bug-prone, and thus require a testing phase in which the bugs should be discovered. The testing phase is considered one of the most difficult tasks in designing a computerized device. The cost of not discovering a bug may be enormous, as the consequences of the bug may be disastrous. For example, a bug may cause the injury of a person relying on the designated behavior of the computerized system.
Generally speaking, the earlier bugs are found, the cheaper and easier it is to fix them and the lower is their cost. For example, a problem in a manufactured hardware or firmware of a product may be due to a design flaw or to manufacturing flow. If the problem is due to design flaw, this necessitates fixing or discarding all manufactured units, and is thus extremely expensive.
Thus, catching problems during the design of a device is highly beneficial. Hence, many developers of computerized systems and in particular electronic circuits invest a substantial portion of the development cycle in discovering and solving problems.
Of particular interest are connectivity problems within an integrated circuit. A typical circuit comprises thousands or more components, each connected to one or more other components. Defining and verifying the required connectivity between the components within a circuit design is thus a problematic task, which if not performed correctly may lead to incorrect and possibly harmful design and hence functionality of the circuit.